package com.hlkj.pay.app.merchant.ext.dto.order;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import com.hlkj.pay.dto.order.PayOrderFundDto;
import com.hlkj.pay.enums.PayOrderEnums;
import com.hlkj.pay.infrastructure.model.merchant.MerchantAppChannelDO;
import com.hlkj.pay.infrastructure.model.order.PayOrderDO;
import com.hlkj.pay.infrastructure.model.pay.PayChannelRequestDO;
import com.hlkj.pay.infrastructure.model.pay.PayWayDO;
import com.hlkj.pay.infrastructure.model.pay.ProviderChannelConfigDO;
import com.hlkj.pay.vo.order.req.MarketingOrdersReq;
import com.hlkj.pay.vo.order.req.OrderPromotionInfo;
import com.hlkj.pay.vo.order.req.PayOrderCommonParamReq;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;

/**
 * @author HlpayTeam
 * @date 2024/09/26 10:21
 */
@Data
public class ChannelPayOrderContext extends ChannelPayCommonContext{
	/**
	 * 商户app通道信息
	 */
	private MerchantAppChannelDO merchantAppChannelDO;
	/**
	 * 支付参数
	 */
	private PayOrderDO payOrderDO;
	/**
	 * 支付方式
	 */
	private PayWayDO payWayDO;
	
	/**
	 * 支付通道
	 */
	private ProviderChannelConfigDO providerChannelConfigDO;
	/**
	 * 通道请求记录
	 */
	
	private PayChannelRequestDO payChannelRequestDO;
	
	@Schema(description = "渠道订单号 第三方渠道订单号")
	private String channelOrderNo;
	/**
	 * 渠道附加订单号
	 */
	@Schema(description = "渠道附加订单号")
	private String channelOrderId;

	/**
	 * 机构订单号
	 */
	@Schema(description = "机构订单号")
	private String insOrderNo;
	
	@Schema(description = "跳转支付数据")
	private String payInfo;
	
	@Schema(description = "支付数据类型，pay_url-支付链接，data-数据体，none-空支付参数")
	private String payDataType;
	/**
	 * 回调地址
	 */
	private String notifyUrl;
	/**
	 * 支付成功跳转
	 */
	private String redirectUrl;
	/**
	 * 是否真实请求第三方 部分接口需要请求自有小程序 公众号 返回的url 是自己小程序、公众号地址
	 */
	private boolean requestThird=true;
	/**
	 * 是否处理成功
	 */
	private PayOrderEnums.PAY_ORDER_STATUS payOrderStatus;

	private List<PayOrderFundDto> accounts;

	private PayOrderCommonParamReq.Extra extra;

	private List<MarketingOrdersReq> marketingOrders;

	private OrderPromotionInfo promotionInfo;

	private String page;

	@Schema(description = "AUT真实商户号")
	private String autSubMerId;
	@Schema(description = "aut通道编码")
	private String autCode;
}
